home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / geos-archive / GEOS-D64 / GEOS Mega ASM (19xx)(-).d64 / list5-4 < prev    next >
Text File  |  2019-04-13  |  7KB  |  305 lines

  1. if .p
  2.      t     "TopSym"
  3.      t     "TopMac"
  4. :grcntrl1     =     $d011
  5. :BildBit     =     %10000000
  6. :MausBit     =     %01000000
  7. :Proze~Bit     =     %00100000
  8. :BildAus     =     %01111111
  9. :MausAus     =     %10111111
  10. :Proze~Aus     =     %11011111
  11. endif
  12.      n     "BlackScreen"
  13.      i
  14.  
  15.  
  16. :Start
  17.      lda     #0
  18.      jsr     SetPattern
  19.      LoadB     dispBufferOn,ST_WR_FORE!ST_WR_BACK
  20.      ldy     #5
  21. ::10
  22.      lda     RecTabelle,y
  23.      sta     r2L,y
  24.      dey
  25.      bpl     :10
  26.      jsr     Rectangle
  27.      LoadW     r0,Men}Tabelle     ; Zeiger auf Men}Tabelle
  28.      lda     #0     ; Maus auf 1. Men}pkt
  29.      jsr     DoMenu     ; Men} darstellen
  30.  
  31.      jsr     IconZusatzText
  32.      LoadB     iconSelFlag,ST_INVERT
  33.      LoadW     r0,IconTable     ; Zeiger auf Icons
  34.      jsr     DoIcons     ; Icon darstellen
  35.  
  36.      jsr     InitProze~
  37.  
  38.      LoadB     FlagByte,BildBit ! MausBit ! Proze~Bit
  39.      jsr     SetzeZeit
  40.      ldx     #0
  41.      jsr     RestartProcess
  42.      rts          ; R}cksprung zur MainLoop
  43.  
  44. :RecTabelle
  45.      b     0
  46.      b     199
  47.      w     0
  48.      w     319
  49.  
  50. :Men}Tabelle
  51.      b     0     ; obere  y-Koord. (byte)
  52.      b     14     ; untere y-Koord. (byte)
  53.      w     0     ; linke  x-Koord. (word)
  54.      w     102     ; rechte x-Koord. (word)
  55.      b     3 ! HORIZONTAL     
  56.  
  57.      w     geosText     
  58.      b     SUB_MENU     
  59.      w     geosSubTabelle     
  60.  
  61.      w     ZeitText
  62.      b     MENU_ACTION
  63.      w     ZeitReaktion
  64.  
  65.      w     VerlassenText
  66.      b     MENU_ACTION
  67.      w     EnterDeskTop
  68.  
  69. :VerlassenText
  70.      b     "verlassen",NULL
  71.  
  72. ;------------Hauptmen}punkt geos----------------
  73. :geosText     
  74.      b     "geos",NULL
  75.  
  76. :geosSubTabelle
  77.      b     15     ; obere  y-Koord. (byte)
  78.      b     29     ; untere y-Koord. (byte)
  79.      w     0     ; linke  x-Koord. (word)
  80.      w     40     ; rechte x-Koord. (word)
  81.      b     1 ! VERTICAL     
  82.  
  83.      w     InfoText     
  84.      b     MENU_ACTION     
  85.      w     InfoReaktion     
  86.  
  87. :InfoText
  88.      b     "Info",NULL
  89.  
  90. :InfoReaktion
  91.      jsr     GotoFirstMenu
  92.      jsr     MonitorAn
  93.      LoadW     r0,InfoDiaTab
  94.      jsr     DoDlgBox
  95.      rts
  96. :InfoDiaTab
  97.      b     $81     ; Standard
  98.      b     DBTXTSTR
  99.      b     10
  100.      b     25
  101.      w     InfoText1
  102.  
  103.      b     DBTXTSTR
  104.      b     10
  105.      b     40
  106.      w     InfoText2
  107.  
  108.      b     DBTXTSTR
  109.      b     10
  110.      b     55
  111.      w     InfoText3
  112.  
  113.      b     OK
  114.      b     16
  115.      b     70
  116.      b     NULL
  117.  
  118. :InfoText1     b     BOLDON,OUTLINEON,"BlackScreen"
  119.      b     PLAINTEXT,BOLDON,NULL
  120. :InfoText2     b     "Ein Beipiel f}r eine",NULL
  121. :InfoText3     b     "Application",NULL
  122.  
  123. ;------------Hauptmen}punkt Zeit----------------
  124.      
  125. :ZeitText     b     "Zeit",NULL
  126. :ZeitReaktion
  127.      jsr     ReDoMenu
  128.      jsr     MonitorAn
  129.      LoadW     a0,ZeitASCII
  130.      LoadW     r0,DialogboxTabelle
  131.      jsr     DoDlgBox
  132.      jsr     GetDecimal
  133.      jsr     SetzeZeit
  134.      rts
  135.  
  136. :DialogboxTabelle
  137.      b 1          ; Schattenmuster 1
  138.      b 32,127          ; Y-Koordinaten
  139.      w 64,255     ; X-Koordinaten
  140.      b DBTXTSTR
  141.      b 10
  142.      b 16
  143.      w EinText
  144.      b DBGETSTRING
  145.      b 10
  146.      b 40
  147.      b a0L
  148.      b 5
  149.      b NULL          ; Endekennzeichen
  150.  
  151. :EinText     b     "Geben Sie den Zeitfaktor ein!",NULL
  152. :ZeitASCII     b     "200",0,0,NULL
  153.  
  154. :GetDecimal
  155.      lda     #0
  156.      sta     a4L
  157.      sta     a4H
  158.      sta     a5H
  159.      tax
  160.      lda     #10
  161.      sta     a5L
  162. ::3     lda     ZeitASCII,x
  163.      beq     :1
  164.      txa
  165.      pha
  166.      ldx     #a4L
  167.      ldy     #a5L
  168.      jsr     DMult
  169.      pla
  170.      tax
  171.      lda     ZeitASCII,x
  172.      sec
  173.      sbc     #48
  174.      clc
  175.      adc     a4L
  176.      sta     a4L
  177.      bcc     :2
  178.      inc     a4H
  179. ::2     inx
  180.      bne     :3
  181. ::1     MoveW     a4,ZeitWert
  182.      rts
  183. ;------------Iconbehandlung---------------------
  184.  
  185.      :XIcon = 12
  186.      :YIcon = 154
  187.  
  188. :IconTable     b     1     ; 1 Icon     
  189.      w     0      ; keine neue Maus     postion !
  190.      b     0      ; (Y-Position Maus)
  191.  
  192.      w     IconGrafik     ; Zeiger auf kompr. Bitmap     
  193.      b     XIcon     ; X-Position Icon     
  194.      b     YIcon     ; Y-Position Icon     
  195.      b     IconBreite     ; Breite des Icon     s
  196.      b     IconH|he     ; H|he des Icons
  197.      w     IconRoutine     ; Iconroutine
  198.  
  199. :IconGrafik
  200. :IconBreite     = .x
  201. :IconH|he          = .y
  202.  
  203. :IconRoutine
  204.      lda     #Proze~Bit
  205.      bit     FlagByte
  206.      beq     :0     ; Verzweige wenn Proze~ aus
  207.      lda     FlagByte
  208.      and     #Proze~Aus
  209.      sta     FlagByte
  210.      jsr     MonitorAn
  211.      jsr     SetzeZeit
  212.      ldx     #0
  213.      jsr     BlockProcess
  214.      rts
  215. ::0
  216.      lda     FlagByte
  217.      ora     #Proze~Bit
  218.      sta     FlagByte
  219.      ldx     #0
  220.      jsr     UnblockProcess
  221.      rts
  222.  
  223. :IconZusatzText
  224.      LoadW     r0,:t1
  225.      LoadB     r1H,160
  226.      LoadW     r11,20
  227.      jsr     PutString
  228.      LoadW     r0,:t2
  229.      LoadB     r1H,168
  230.      LoadW     r11,20
  231.      jsr     PutString
  232.      rts
  233.  
  234. ::t1     b     "BlackScreen an:",NULL
  235. ::t2     b     "BlackScreen aus:",NULL
  236.  
  237.  
  238. ;------------Proze~behandlung-------------------     
  239. :InitProze~
  240.      LoadW     r0,Proze~Tabelle
  241.      lda     #1
  242.      jsr     InitProcesses
  243.      rts
  244. :Proze~Tabelle
  245.      w     Proze~Routine
  246.      w     2
  247. :Proze~Routine
  248.      CmpW     MausXAlt,mouseXPos     
  249.      bne     :0     ; Maus bewegt
  250.      CmpB     MausYAlt,mouseYPos
  251.      bne     :0     ; Maus bewegt
  252.      lda     FlagByte
  253.      and     #MausAus
  254.      sta     FlagByte 
  255.      jmp     :1
  256. ::0     lda     FlagByte
  257.      ora     #MausBit
  258.      sta     FlagByte     
  259. ::1     MoveW     mouseXPos,MausXAlt
  260.      MoveB     mouseYPos,MausYAlt
  261.      bit     FlagByte     ; Testen ob Monitor an
  262.      bmi     :3     ; Verzweige wenn Monitor an
  263.      bvs     :2     ; Verzweige wenn Maus bewegt
  264.      rts     
  265. ::2     jsr     MonitorAn
  266.      jmp     SetzeZeit
  267. ::3     bvc     :4     ; Verzweige wenn Maus ruhig
  268.      jmp     SetzeZeit     ; Z{hler zur}cksetzen, Ende
  269. ::4     ldx     #a1L
  270.      jsr     Ddec
  271.      bne     :5     ; Verzweige wenn Z{hler = 0
  272.      jsr     MonitorAus
  273. ::5     rts
  274.  
  275. :FlagByte     b     0
  276. :ZeitWert     w     200
  277.  
  278. :SetzeZeit
  279.      MoveW     ZeitWert,a1
  280.      rts
  281. :MonitorAn     
  282.      jsr     InitForIO
  283.      lda     grcntrl1
  284.      ora     #%00010000
  285.      sta     grcntrl1
  286.      jsr     DoneWithIO
  287.      lda     FlagByte
  288.      ora     #BildBit
  289.      sta     FlagByte
  290.      rts     
  291. :MonitorAus
  292.      jsr     InitForIO
  293.      lda     grcntrl1
  294.      and     #%11101111
  295.      sta     grcntrl1
  296.      jsr     DoneWithIO
  297.      lda     FlagByte
  298.      and     #BildAus
  299.      sta     FlagByte
  300.      rts
  301.  
  302. :MausXAlt     w     0
  303. :MausYAlt     b     0
  304.  
  305.